//引入node-xlsx解析excel模块
var node_xlsx = require('node-xlsx');
var fs = require('fs');
var path = require('path');
var { getStar, getAge } = require('./common');

// 列对应字段名
const colName = {
    '昵称': 'nickname',
    '姓名': 'name',
    '手机号': 'phone',
    '推荐人手机号': 'inviter_wechat_code',
    '性别': 'grender',
    '婚姻状况': 'marital_status',
    '签名': 'signature',
    '年龄': 'age',
    '出生日期': 'birthday',
    '微信号': 'wechat_code',
    '备注': 'remarks',
    '星座': 'star',
    '身高': 'height',
    '体重': 'weight',
    '学历': 'education',
    '毕业院校': 'university',
    '所在单位': 'company',
    '职业或行业': 'position',
    '年收入': 'year_income',
    '房产信息': 'house',
    '是否购车': 'car',
    '希望何时结婚': 'marry',
    '居住省': 'province',
    '居住市': 'city',
    '居住区': 'area',
    '籍贯省': 'province_town',
    '籍贯市': 'city_town',
    '籍贯区': 'area_town',
    '户口省': 'province_account',
    '户口市': 'city_account',
    '户口区': 'area_account',
    '是否家长注册': 'is_father',
    '平台是否公开': 'isopen',
    '相册是否公开': 'islook',
    '主页是否公开': 'islook',
    '隐藏位置信息': 'islocal',
    '隐藏学校名称': 'isschool',
    '隐藏公司名称': 'iscompany',
    '屏蔽同事': 'issecret',
    '与推荐人关系': 'relationship',
    '自我描述': 'self_description',
    '家庭背景': 'family_back',
    '兴趣爱好': 'hobby',
    '理想的另一半': 'ideal_partner'
};
// 学历选项
const education_list = {
    "高中及以下": 1,
    "中专": 2,
    "大专": 3,
    "本科": 4,
    "硕士": 5,
    "博士": 6,
    "研究生": 5
};

// execl导入格式化json
module.exports.xlsxParse = function (filepath) {
    let obj = node_xlsx.parse(filepath);// 支持的excel文件类有.xlsx .xls .xlsm .xltx .xltm .xlsb .xlam等
    let excelObj = obj[0].data;//取得第一个excel表的数据
    let insertData = [];//存放数据

    //循环遍历表每一行的数据
    let colname = excelObj[0];
    for (var i = 1; i < excelObj.length; i++) {
        var rdata = excelObj[i];
        var rowdata = {
            sourcetype: '后台导入'
        };
        for (var j = 0; j < rdata.length; j++) {
            let col = colname[j];
            let val = rdata[j];
            if(col=='星座' || col=='年龄'){
                continue;
            }
            if (col == '出生日期') {
                if (!val) {
                    val = moment(new Date()).format('YYYY-MM-DD');
                }
                rowdata[colName['星座']]= getStar(val);
                rowdata[colName['年龄']] = getAge(val);
            } else if (col == '是否家长注册' || col=='隐藏位置信息' || col=='隐藏学校名称' || col=='隐藏公司名称' || col=='屏蔽同事') {
                val = val == '是' ? 1 : 0;
            } else if (col == '平台是否公开' || col == '相册是否公开' || col == '主页是否公开') {
                val = val == '是' ? 0 : 1;
            } else if (col == '学历') {
                rowdata['education_code'] = education_list[val];
            }
            rowdata[colName[col]] = val;
        }
        insertData.push(rowdata)
    }
    return insertData;
}
// json导出execl
module.exports.exportParse = async function (list, fname) {
    try {
        const buffer_data = node_xlsx.build(list);
        let filename = fname + (new Date().getTime()) + '.xlsx';
        let filepath = path.join(process.cwd(), `/files/${filename}`);
        await new Promise(function (resolve, reject) {
            fs.writeFile(filepath, buffer_data, function (err) {
                if (err) {
                    console.log('-------exportParse---------err:', err)
                    reject(err);
                } else {
                    resolve(null);
                }
            })
        });
        let buffer = fs.readFileSync(filepath);
        return {
            code:0,
            filename,
            buffer
        }
    } catch (error) {
        return {
            code: 1,
            msg: '文件下载失败'
        }
    }
}
